home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_zipimport.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  8KB  |  220 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. import sys
  5. import os
  6. import marshal
  7. import imp
  8. import struct
  9. import time
  10. import zlib
  11. from zipfile import ZipFile, ZipInfo, ZIP_STORED, ZIP_DEFLATED
  12. from test import test_support
  13. from test.test_importhooks import ImportHooksBaseTestCase, test_src, test_co
  14. import zipimport
  15.  
  16. def make_pyc(co, mtime):
  17.     data = marshal.dumps(co)
  18.     if type(mtime) is type(0.0):
  19.         if mtime < 2147483647:
  20.             mtime = int(mtime)
  21.         else:
  22.             mtime = int(-0x100000000L + long(mtime))
  23.     
  24.     pyc = imp.get_magic() + struct.pack('<i', int(mtime)) + data
  25.     return pyc
  26.  
  27. NOW = time.time()
  28. test_pyc = make_pyc(test_co, NOW)
  29. pyc_ext = '.pyo'
  30. TESTMOD = 'ziptestmodule'
  31. TESTPACK = 'ziptestpackage'
  32. TESTPACK2 = 'ziptestpackage2'
  33. TEMP_ZIP = os.path.abspath('junk95142' + os.extsep + 'zip')
  34.  
  35. class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
  36.     compression = ZIP_STORED
  37.     
  38.     def setUp(self):
  39.         zipimport._zip_directory_cache.clear()
  40.         ImportHooksBaseTestCase.setUp(self)
  41.  
  42.     
  43.     def doTest(self, expected_ext, files, *modules, **kw):
  44.         z = ZipFile(TEMP_ZIP, 'w')
  45.         
  46.         try:
  47.             for mtime, data in files.items():
  48.                 zinfo = ZipInfo(name, time.localtime(mtime))
  49.                 zinfo.compress_type = self.compression
  50.                 z.writestr(zinfo, data)
  51.             
  52.             z.close()
  53.             stuff = kw.get('stuff', None)
  54.             if stuff is not None:
  55.                 f = open(TEMP_ZIP, 'rb')
  56.                 data = f.read()
  57.                 f.close()
  58.                 f = open(TEMP_ZIP, 'wb')
  59.                 f.write(stuff)
  60.                 f.write(data)
  61.                 f.close()
  62.             
  63.             sys.path.insert(0, TEMP_ZIP)
  64.             mod = __import__('.'.join(modules), globals(), locals(), [
  65.                 '__dummy__'])
  66.             if expected_ext:
  67.                 file = mod.get_file()
  68.                 self.assertEquals(file, os.path.join(TEMP_ZIP, *modules) + expected_ext)
  69.         finally:
  70.             z.close()
  71.             os.remove(TEMP_ZIP)
  72.  
  73.  
  74.     
  75.     def testAFakeZlib(self):
  76.         if 'zlib' in sys.builtin_module_names:
  77.             return None
  78.         
  79.         if 'zlib' in sys.modules:
  80.             del sys.modules['zlib']
  81.         
  82.         files = {
  83.             'zlib.py': (NOW, test_src) }
  84.         
  85.         try:
  86.             self.doTest('.py', files, 'zlib')
  87.         except ImportError:
  88.             if self.compression != ZIP_DEFLATED:
  89.                 self.fail('expected test to not raise ImportError')
  90.             
  91.         except:
  92.             self.compression != ZIP_DEFLATED
  93.  
  94.         if self.compression != ZIP_STORED:
  95.             self.fail('expected test to raise ImportError')
  96.         
  97.  
  98.     
  99.     def testPy(self):
  100.         files = {
  101.             TESTMOD + '.py': (NOW, test_src) }
  102.         self.doTest('.py', files, TESTMOD)
  103.  
  104.     
  105.     def testPyc(self):
  106.         files = {
  107.             TESTMOD + pyc_ext: (NOW, test_pyc) }
  108.         self.doTest(pyc_ext, files, TESTMOD)
  109.  
  110.     
  111.     def testBoth(self):
  112.         files = {
  113.             TESTMOD + '.py': (NOW, test_src),
  114.             TESTMOD + pyc_ext: (NOW, test_pyc) }
  115.         self.doTest(pyc_ext, files, TESTMOD)
  116.  
  117.     
  118.     def testEmptyPy(self):
  119.         files = {
  120.             TESTMOD + '.py': (NOW, '') }
  121.         self.doTest(None, files, TESTMOD)
  122.  
  123.     
  124.     def testBadMagic(self):
  125.         m0 = ord(test_pyc[0])
  126.         m0 ^= 4
  127.         badmagic_pyc = chr(m0) + test_pyc[1:]
  128.         files = {
  129.             TESTMOD + '.py': (NOW, test_src),
  130.             TESTMOD + pyc_ext: (NOW, badmagic_pyc) }
  131.         self.doTest('.py', files, TESTMOD)
  132.  
  133.     
  134.     def testBadMagic2(self):
  135.         m0 = ord(test_pyc[0])
  136.         m0 ^= 4
  137.         badmagic_pyc = chr(m0) + test_pyc[1:]
  138.         files = {
  139.             TESTMOD + pyc_ext: (NOW, badmagic_pyc) }
  140.         
  141.         try:
  142.             self.doTest('.py', files, TESTMOD)
  143.         except ImportError:
  144.             pass
  145.  
  146.         self.fail('expected ImportError; import from bad pyc')
  147.  
  148.     
  149.     def testBadMTime(self):
  150.         t3 = ord(test_pyc[7])
  151.         t3 ^= 2
  152.         badtime_pyc = test_pyc[:7] + chr(t3) + test_pyc[8:]
  153.         files = {
  154.             TESTMOD + '.py': (NOW, test_src),
  155.             TESTMOD + pyc_ext: (NOW, badtime_pyc) }
  156.         self.doTest('.py', files, TESTMOD)
  157.  
  158.     
  159.     def testPackage(self):
  160.         packdir = TESTPACK + os.sep
  161.         files = {
  162.             packdir + '__init__' + pyc_ext: (NOW, test_pyc),
  163.             packdir + TESTMOD + pyc_ext: (NOW, test_pyc) }
  164.         self.doTest(pyc_ext, files, TESTPACK, TESTMOD)
  165.  
  166.     
  167.     def testDeepPackage(self):
  168.         packdir = TESTPACK + os.sep
  169.         packdir2 = packdir + TESTPACK2 + os.sep
  170.         files = {
  171.             packdir + '__init__' + pyc_ext: (NOW, test_pyc),
  172.             packdir2 + '__init__' + pyc_ext: (NOW, test_pyc),
  173.             packdir2 + TESTMOD + pyc_ext: (NOW, test_pyc) }
  174.         self.doTest(pyc_ext, files, TESTPACK, TESTPACK2, TESTMOD)
  175.  
  176.     
  177.     def testGetData(self):
  178.         z = ZipFile(TEMP_ZIP, 'w')
  179.         z.compression = self.compression
  180.         
  181.         try:
  182.             name = 'testdata.dat'
  183.             data = []([ chr(x) for x in range(256) ]) * 500
  184.             z.writestr(name, data)
  185.             z.close()
  186.             zi = zipimport.zipimporter(TEMP_ZIP)
  187.             self.assertEquals(data, zi.get_data(name))
  188.         finally:
  189.             z.close()
  190.             os.remove(TEMP_ZIP)
  191.  
  192.  
  193.     
  194.     def testImporterAttr(self):
  195.         src = 'if 1:  # indent hack\n        def get_file():\n            return __file__\n        if __loader__.get_data("some.data") != "some data":\n            raise AssertionError, "bad data"\n'
  196.         pyc = make_pyc(compile(src, '<???>', 'exec'), NOW)
  197.         files = {
  198.             TESTMOD + pyc_ext: (NOW, pyc),
  199.             'some.data': (NOW, 'some data') }
  200.         self.doTest(pyc_ext, files, TESTMOD)
  201.  
  202.     
  203.     def testImport_WithStuff(self):
  204.         files = {
  205.             TESTMOD + '.py': (NOW, test_src) }
  206.         self.doTest('.py', files, TESTMOD, stuff = 'Some Stuff' * 31)
  207.  
  208.  
  209.  
  210. class CompressedZipImportTestCase(UncompressedZipImportTestCase):
  211.     compression = ZIP_DEFLATED
  212.  
  213.  
  214. def test_main():
  215.     test_support.run_unittest(UncompressedZipImportTestCase, CompressedZipImportTestCase)
  216.  
  217. if __name__ == '__main__':
  218.     test_main()
  219.  
  220.